import marimo

__generated_with = "0.13.7"
app = marimo.App(width="medium")


@app.cell
def _():
    import marimo as mo
    return (mo,)


@app.cell
def _(mo):
    mo.md(
        r"""
    # 自动微分

    目前存在常用4种求导（微分）方法：

    1. 手动计算：顾名思义，就是手动计算函数的导数，这种方式依赖人工，缺乏灵活性；
    3. 数值微分：根据导函数的定义来计算导数（近似），$f'(x)=(f(x+h)-f(x))/h$，这种方式简单但存在多种误差（截断误差、舍入误差）；
    4. 符号微分：使用程序计算出函数的导函数表达式，这种方式精确，广泛用于科学计算软件入matlab，但要求表达式闭包（能一次性通过表达式写出）且存在表达式膨胀；
    5. 自动微分：介于数值微分和符号微分之间，简单和常规的函数（基本算子）通过符号微分方式求解，带入数值求解，保留中间值，可以和循环和选择结构联合使用，灵活性较高，广泛用于机器学习领域；
    """
    )
    return


@app.cell
def _(mo):
    mo.md(r"""## 数学基础""")
    return


@app.cell
def _(mo):
    mo.md(r"""### 求导链式法则""")
    return


if __name__ == "__main__":
    app.run()
